class StorageUtil {
  /**
   * 设置本地存储
   * @param {string} key 存储键名
   * @param {*} value 存储的值
   * @param {number} [expiresIn] 可选，过期时间（毫秒）
   */
  static set(key, value, expiresIn) {
    const item = {
      value: value,
      expiresAt: expiresIn ? Date.now() + expiresIn : undefined,
    };
    try {
      wx.setStorageSync(key, item);
    } catch (error) {
      console.error(`设置本地存储失败，key: ${key}`, error);
    }
  }

  /**
   * 获取本地存储
   * @param {string} key 存储键名
   * @returns {*} 存储的值或 null（如果不存在或已过期）
   */
  static get(key) {
    try {
      const item = wx.getStorageSync(key);
      if (!item) return null;

      if (item.expiresAt && Date.now() > item.expiresAt) {
        wx.removeStorageSync(key);
        return null;
      }

      return item.value;
    } catch (error) {
      console.error(`获取本地存储失败，key: ${key}`, error);
      return null;
    }
  }

  /**
   * 移除本地存储
   * @param {string} key 存储键名
   */
  static remove(key) {
    try {
      wx.removeStorageSync(key);
    } catch (error) {
      console.error(`移除本地存储失败，key: ${key}`, error);
    }
  }

  /**
   * 清除所有本地存储
   */
  static clear() {
    try {
      wx.clearStorageSync();
    } catch (error) {
      console.error('清除本地存储失败', error);
    }
  }
}

module.exports = {
  StorageUtil
};